[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocat...
authorMin-Yih Hsu <min.hsu@sifive.com>
Sat, 17 Feb 2024 00:19:56 +0000 (16:19 -0800)
committerMatthias Klose <doko@debian.org>
Sat, 8 Nov 2025 13:36:04 +0000 (14:36 +0100)
commita95848a705b5d0fc4c757a9c751f711f18bee723
treeed14f80377dbc20bcd4ba6846a822fc5ce3fbe6d
parent09c77a843a8769c51a096ab53597d31460082197
[PATCH] [JITLink] Always unmap standard segments in InProcessMemoryManager::deallocate (#81943)

Right now InProcessMemoryManager only releases a standard segment (via
sys::Memory::releaseMappedMemory) in `deallocate` when there is a
DeallocAction associated, leaving residual memory pages in the process
until termination.
Despite being a de facto memory leak, it won't cause a major issue if
users only create a single LLJIT instance per process, which is the most
common use cases. It will, however, drain virtual memory pages if we
create thousands of ephemeral LLJIT instances in the same process.

This patch fixes this issue by releasing every standard segments
regardless of the attached DeallocAction.

Gbp-Pq: Name rv64-fix-mm-leak.diff
llvm/lib/ExecutionEngine/JITLink/JITLinkMemoryManager.cpp